#pragma once
#include "vec3.h"
#include "vec2.h"
#include <random>

namespace mray{

struct BxDF
{
	virtual float Sample(const vec3& wo, vec3& wi, const float u1, const float u2)const;
protected:
	virtual float Pdf(const vec3& wo, const vec3& wi)const;


};


struct BlinnBRDF
{
	BlinnBRDF(float exponent) : m_exponent(exponent){}
	float Sample(const vec3& wo, vec3& wi, const float u1, const float u2)const;
protected:
	float Pdf(const vec3& wo, const vec3& wi)const;

private:
	float m_exponent;
};

}